/**
 * 标签相关类型定义
 * 定义标签数据结构和相关接口
 */

/**
 * 标签基础信息接口
 */
export interface Tag {
  /** 唯一标识符 */
  id: string;
  /** 标签名称 */
  name: string;
  /** 标签颜色 */
  color?: string;
  /** 标签描述 */
  description?: string;
  /** 使用该标签的智能体数量 */
  count?: number;
  /** 创建时间 */
  createdAt: string;
  /** 更新时间 */
  updatedAt: string;
}

/**
 * 标签数据容器接口
 */
export interface TagData {
  /** 标签列表 */
  tags: Tag[];
}

/**
 * 创建标签时的输入参数
 */
export type CreateTagInput = Omit<Tag, 'id' | 'createdAt' | 'updatedAt'>;

/**
 * 更新标签时的输入参数
 */
export type UpdateTagInput = Partial<CreateTagInput>;

/**
 * 标签查询参数
 */
export interface TagQuery {
  /** 页码，默认1 */
  page?: number;
  /** 每页数量，默认10 */
  limit?: number;
  /** 搜索关键词 */
  search?: string;
}

/**
 * 标签API响应接口
 */
export interface TagApiResponse<T = any> {
  /** 操作是否成功 */
  success: boolean;
  /** 返回的数据 */
  data?: T;
  /** 错误信息 */
  error?: string;
  /** 成功信息 */
  message?: string;
  /** 总数量 */
  total?: number;
  /** 当前页码 */
  page?: number;
  /** 每页数量 */
  limit?: number;
  /** 分页信息 */
  pagination?: {
    page: number;
    limit: number;
    total: number;
    totalPages: number;
  };
}

/**
 * 标签操作结果类型
 */
export interface TagOperationResult<T = Tag> {
  /** 操作是否成功 */
  success: boolean;
  /** 错误信息（如果有） */
  error?: string;
  /** 提示信息（如果有） */
  message?: string;
  /** 返回的数据（如果有） */
  data?: T;
}

/**
 * 标签校验规则
 */
export interface TagValidationRules {
  name: {
    required: boolean;
    minLength: number;
    maxLength: number;
  };
  color: {
    pattern: RegExp;
  };
  description: {
    maxLength: number;
  };
}

/**
 * 标签颜色预设
 */
export const TAG_COLORS = [
  '#00ff88', // 霓虹绿
  '#00ccff', // 电子蓝
  '#ff0080', // 霓虹粉
  '#ffff00', // 霓虹黄
  '#ff8000', // 霓虹橙
  '#8000ff', // 霓虹紫
  '#ff0040', // 霓虹红
  '#40ff00'  // 霓虹青
] as const;

/**
 * 标签颜色类型
 */
export type TagColor = typeof TAG_COLORS[number];